package main

//// 定义链表节点结构体
//type ListNode struct {
//	Val  int
//	Next *ListNode
//}
//
//// 函数：将两个链表相加
//
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
//	// 创建一个虚拟头节点
//	dummyHead := &ListNode{}
//	current := dummyHead
//	carry := 0
//
//	for l1 != nil || l2 != nil {
//		var x, y int
//		if l1 != nil {
//			x = l1.Val
//			l1 = l1.Next
//		}
//		if l2 != nil {
//			y = l2.Val
//			l2 = l2.Next
//		}
//
//		sum := carry + x + y
//		carry = sum / 10
//		current.Next = &ListNode{Val: sum % 10}
//		current = current.Next
//	}
//
//	if carry > 0 {
//		current.Next = &ListNode{Val: carry}
//	}
//
//	return dummyHead.Next
//}
//
//// 工具函数：将数组转换为链表
//func arrayToList(arr []int) *ListNode {
//	dummyHead := &ListNode{}
//	current := dummyHead
//	for _, val := range arr {
//		current.Next = &ListNode{Val: val}
//		current = current.Next
//	}
//	return dummyHead.Next
//}
//
//// 工具函数：将链表转换为数组
//func listToArray(head *ListNode) []int {
//	var arr []int
//	for head != nil {
//		arr = append(arr, head.Val)
//		head = head.Next
//	}
//	return arr
//}
//
//// 主函数
//func main() {
//	// 示例1
//	l1 := arrayToList([]int{2, 4, 3})
//	l2 := arrayToList([]int{5, 6})
//	result := addTwoNumbers(l1, l2)
//	fmt.Println("输入:l1 = [2,4,3], l2 = [5,6,4]")
//	fmt.Println("输出：", listToArray(result)) // 输出：[7, 0, 8]
//
//	// 示例2
//	l1 = arrayToList([]int{9, 9, 9, 9, 9, 9, 9})
//	l2 = arrayToList([]int{9, 9, 9, 9})
//	result = addTwoNumbers(l1, l2)
//	fmt.Println("输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]")
//	fmt.Println("输出：", listToArray(result)) // 输出：[8, 9, 9, 9, 0, 0, 0, 1]
//
//	// 示例3
//	l1 = arrayToList([]int{0})
//	l2 = arrayToList([]int{0})
//	result = addTwoNumbers(l1, l2)
//	fmt.Println("输入:l1 = [0], l2 = [0]")
//	fmt.Println("输出：", listToArray(result)) // 输出：[0]
//}
